<?php
/**
@author 
@copyright 2008
 */
// Load JsHttpRequest backend.
require_once $_SERVER['DOCUMENT_ROOT']."/admin/js/JsHttpRequest/JsHttpRequest.php";
// Create main library object. You MUST specify page encoding!
$JsHttpRequest =& new JsHttpRequest("UTF-8");
// Store resulting data in $_RESULT array (will appear in req.responseJs).
/**
 * CONFIGURATION
 */
define ("DIRECT_ACCESS", true);
require_once ($_SERVER['DOCUMENT_ROOT']."/conf/conf.php");
$smarty=init_smarty("admin");
$module="";
$tmpl_dir="/templates/";
/** START 	Tables **/
$table_video = $db->pfx."video_catalog";
$table_video_images = $db->pfx."video_images";
$table_video_videos = $db->pfx."video_videos";
$err = new ErrorWizard;
$Cat = new CategoryWizard;
/** END 	Tables **/
/**
 * Если указано действия, то дальнейшее управление передается "вилке" выбора
 */
if (isset($_REQUEST['action']))
	$action = $_REQUEST['action'];
/**
 * В случае отсутствия явного указания действия Ajax прекратит работу и выдаст алерт
 */
else die("Ошибка! Не указано действие!");
/**
 *	START
 */
switch($action)
{
	case 'recurse':
		if(isset($_REQUEST['parent']) and $_REQUEST['parent']!='')
		{
			$parent=intval($_REQUEST['parent']);
			$categories=$Cat->recurse($parent,0,0,1);
			//print $parent;
			$smarty->assign("categories",$categories);
			switch($_REQUEST['type'])
			{
				case 'select':
					$output = $smarty->fetch("templates/other/select_cat.html");
					break;
				case 'checkbox':
					$output = $smarty->fetch("templates/other/select_cat_checkbox.html");
					break;
				case 'radio':
					$output = $smarty->fetch("templates/other/select_cat_radio.html");
					break;
			}
			
		}
		$GLOBALS['_RESULT']=array('output'=>$output);
		break;
	case 'addAdress':
		if(isset($_REQUEST['parent']) and $_REQUEST['parent']!='')
		{
		}
		break;
	case 'addPhotoForm':
		$items_num = 0;
		if(isset($_REQUEST['items_num']))
		{
			$items_num = intval($_REQUEST['items_num']);
		}
		$smarty->assign("images_num",$items_num);
		$template = "modules/video/templates/photo.inc.html";
		$output = $smarty->fetch($template);
		$GLOBALS['_RESULT']=array('output'=>$output);
	break;
	/** //TODO: archieve - change event status to 'archive'
	 */
	case 'addVideoForm':
		$items_num = 0;
		if(isset($_REQUEST['items_num']))
		{
			$items_num = intval($_REQUEST['items_num']);
		}
		$smarty->assign("videos_num",$items_num);
		$template = "modules/video/templates/video.inc.html";
		$output = $smarty->fetch($template);
		$GLOBALS['_RESULT']=array('output'=>$output);
	break;
	/** //TODO: archieve - change event status to 'archive'
	 */
	case 'archieve':
		switch($_REQUEST['type'])
		{
			case 'event':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				/** сообщения об ошибках */
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_events;
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					/** сборщик ошибок */
					$no_error = array();
					$ok=1;
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$archive = array('display' => 2);
						$archieving = $db->update($table_items,$archive,$sql_clause);
						$ok = 1;
						$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias));
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				}
				else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
				break;
		}
		break;
	/** //TODO: unarchieve - change event status to 'archive'
	 */
	case 'unarchieve':
		switch($_REQUEST['type'])
		{
			case 'event':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				/** сообщения об ошибках */
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_events;
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					/** сборщик ошибок */
					$no_error = array();
					$ok=1;
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$archive = array('display' => 1);
						$archieving = $db->update($table_items,$archive,$sql_clause);
						$ok = 1;
						$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias));
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				}
				else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
				break;
		}
		break;
	/** //TODO: del_item - ajax deleting of item by $type
	 */
	case 'del_item':
		switch($_REQUEST['type'])
		{
			//TODO: del_item->adress
			case 'adress':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items = $table_adress;
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$result=$db->del($table_items,$sql_clause);
						if($result!='-1')
							$output = "Удалено";
						else $output="Ошибка при удалении!";
						$GLOBALS['_RESULT']=array('output'=>$output);
					}
				}
				break;
			//TODO: del_item->video
			case 'video':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_videos;
					$item_dir = "/videos/";
					$template = "video";
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
						@unlink($path_to_delete);
						$result=$db->del($table_items,$sql_clause);
						if($result!='-1')
							$output = "Удалено";
						else $output="Ошибка при удалении!";
						$GLOBALS['_RESULT']=array('output'=>$output);
					}
				}
				break;
			//TODO: del_item->photo
			case 'photo':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_photoes;
					$item_dir = "/photoes/";
					$template = "photo";
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
						@unlink($path_to_delete."_small.jpg");
						@unlink($path_to_delete."_med.jpg");
						@unlink($path_to_delete.".jpg");
						$result=$db->del($table_items,$sql_clause);
						if($result!='-1')
							$output = "Удалено";
						else $output="Ошибка при удалении!";
						$GLOBALS['_RESULT']=array('output'=>$output);
					}
				}
				break;
			//TODO: del_item->price
			case 'price':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_prices;
					$item_dir = "/prices/";
					$template = "price";
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
						@unlink($path_to_delete);
						$result=$db->del($table_items,$sql_clause);
						if($result!='-1')
							$output = "Удалено";
						else $output="Ошибка при удалении!";
						$GLOBALS['_RESULT']=array('output'=>$output);
					}
				}
				break;
			//TODO: del_item->good
			case 'good':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_goods;
					$item_dir = "/goods/";
					$template = "good";
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
						@unlink($path_to_delete."_small.jpg");
						@unlink($path_to_delete."_med.jpg");
						@unlink($path_to_delete.".jpg");
						$result=$db->del($table_items,$sql_clause);
						if($result!='-1')
							$output = "Удалено";
						else $output="Ошибка при удалении!";
						$GLOBALS['_RESULT']=array('output'=>$output);
					}
				}
				break;
			//TODO: del_item->event
			case 'event':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_events;
					/** директория, содержащая ассоциированные файлы */
					$item_dir = "/events/";
					/** шаблон для отображения */
					$template = "event";
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					// если условие удаления не пустое
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);// форматируем условие удаления
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
						// если объект существует
						if($item != 0)
						{
							/** START 	Удаляем жанры этого события */
							$genres = $db->query("DELETE FROM $table_genres WHERE event_id='".$item['id']."'");
							/** END 	Удаляем жанры этого события */
							/** START 	Удаляем комментарии этого события */
							$comments = $db->query("DELETE FROM ".PFX."comments WHERE obj_id='".$item['id']."' AND module = 'afisha'");
							/** END 	Удаляем комментарии этого события */
							/** START 	Удаляем сеансы этого события */
							$seances = $db->fetch_list("SELECT id FROM $table_afisha WHERE event_id='".$item['id']."'");
							// если есть сеансы
							if(!empty($seances))
							{
								$error_seance = false;// изначально ошибок нет
								foreach($seances as $seance=>$id)
								{
									$clause_seance = "WHERE id='".$id."'";
									$seance_del = $db->del($table_afisha,$clause_seance,__FILE__,__LINE__);
									// если ошибка
									if($seance_del=='-1')
									{
										$error_seance = true;
										$output_message[] = "Ошибка при удалении сеанса с ID #$id";// логируем ошибку
										break;
									}
								}
								if($error_seance) $error = true;// если были ошибки - запоминаем
								else{$output_message[] = "Сеансы объекта удалены";}// иначе логируем успех
							}
							/** END 	Удаляем сеансы этого события */
							// если не возникло ошибок при удалении сеансов
							if(!$error)
							{
								/** START 	Удаляем ассоциированные файлы этого события */
								$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
								@unlink($path_to_delete."_1_small.jpg");
								@unlink($path_to_delete."_1_med.jpg");
								@unlink($path_to_delete."_1.jpg");
								@unlink($path_to_delete."_2_small.jpg");
								@unlink($path_to_delete."_2_med.jpg");
								@unlink($path_to_delete."_2.jpg");
								@unlink($path_to_delete."_3_small.jpg");
								@unlink($path_to_delete."_3_med.jpg");
								@unlink($path_to_delete."_3.jpg");
								@unlink($path_to_delete."_4_small.jpg");
								@unlink($path_to_delete."_4_med.jpg");
								@unlink($path_to_delete."_4.jpg");
								@unlink($path_to_delete.".jpg");
								/** END 	Удаляем ассоциированные файлы этого события */
								
								$result=$db->del($table_items,$sql_clause);//удаляем само событие
								
								if($result!='-1'){$ok=1;$output_message[] = "Объект удален!";}
								else{$ok=0;$output_message[]="Ошибка при удалении объекта!";}
							}
							else{$ok=0;$output_message[] = "Удаление прервано! Объект не удален, но некоторые сеансы возможно были удалены в процессе";}// иначе логируем ошибку
						}
						else{$ok=0;$output_message[] = "Не найден объект для удаления!";}// иначе логируем ошибку
					}
					else{$ok=0;$output_message[] = "Недостаточно данных для идентификации объекта!";}// иначе логируем ошибку
				}
				else{$ok=0;$output_message[] = "Не выбран объект для удаления!";}// иначе логируем ошибку
				// отправляем лог и статус операции
				$GLOBALS['_RESULT']=array('output'=>implode("<br>",$output_message),'ok'=>$ok);
				break;
			//TODO: del_item->place
			case 'place':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_places;
					/** директория, содержащая ассоциированные файлы */
					$item_dir = "/places/";
					/** шаблон для отображения */
					$template = "place";
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					// если условие удаления не пустое
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);// форматируем условие удаления
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
						// если объект существует
						if($item != 0)
						{
							/** START 	Удаляем сеансы этого события */
							$seances = $db->fetch_list("SELECT id FROM $table_afisha WHERE event_id='".$item['id']."'");
							// если есть сеансы
							if(!empty($seances))
							{
								$error_seance = false;// изначально ошибок нет
								foreach($seances as $seance=>$id)
								{
									$clause_seance = "WHERE id='".$id."'";
									$seance_del = $db->del($table_afisha,$clause_seance,__FILE__,__LINE__);
									// если ошибка
									if($seance_del=='-1')
									{
										$error_seance = true;
										$output_message[] = "Ошибка при удалении сеанса с ID #$id";// логируем ошибку
										break;
									}
								}
								if($error_seance) $error = true;// если были ошибки - запоминаем
								else{$output_message[] = "Сеансы объекта удалены";}// иначе логируем успех
							}
							/** END 	Удаляем сеансы этого события */
							// если не возникло ошибок при удалении сеансов
							if(!$error)
							{
								/** START 	Удаляем ассоциированные файлы этого события */
								$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
								@unlink($path_to_delete."_1_small.jpg");
								@unlink($path_to_delete."_1_med.jpg");
								@unlink($path_to_delete."_1.jpg");
								@unlink($path_to_delete.".jpg");
								/** END 	Удаляем ассоциированные файлы этого события */
								
								$result=$db->del($table_items,$sql_clause);//удаляем само событие
								
								if($result!='-1'){$ok=1;$output_message[] = "Объект удален";}
								else{$ok=0;$output_message[]="Ошибка при удалении объекта!";}
							}
							else{$ok=0;$output_message[] = "Удаление прервано! Объект не удален, но некоторые сеансы возможно были удалены в процессе";}// иначе логируем ошибку
						}
						else{$ok=0;$output_message[] = "Не найден объект для удаления!";}// иначе логируем ошибку
					}
					else{$ok=0;$output_message[] = "Недостаточно данных для идентификации объекта!";}// иначе логируем ошибку
				}
				else{$ok=0;$output_message[] = "Не выбран объект для удаления!";}// иначе логируем ошибку
				// отправляем лог и статус операции
				$GLOBALS['_RESULT']=array('output'=>implode("<br>",$output_message),'ok'=>$ok);
				break;
			//TODO: del_item->seance
			case 'seance':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_afisha;
					/** шаблон для отображения */
					$template = "seance";
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					// если условие удаления не пустое
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);// составляем условие
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
						// если объект существует
						if($item!=0)
						{
							/** Удаление объекта */
							$result=$db->del($table_items,$sql_clause);
							// если удачно
							if($result!='-1'){$ok = 1;$output_message = "Объект удален!";}// логируем успех
							else{$ok = 0;$output="Ошибка при удалении объекта!";}// иначе логируем ошибку
						}
						else{$ok = 0;$output="Не найден объект для удаления";}// иначе логируем ошибку
					}
					else{$ok = 0;$output="Недостаточно данных для идентификации объекта";}// иначе логируем ошибку
				}
				else{$ok = 0;$output="Не выбран объект для удаления";}// иначе логируем ошибку
				// отправляем лог и статус операции
				$GLOBALS['_RESULT']=array('output'=>$output_message,'ok'=>$ok);
				break;
			//TODO: del_item->page
			case 'page':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$db->pfx."site_content";
					/** шаблон для отображения */
					$template = "seance";
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					// если условие удаления не пустое
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);// составляем условие
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");// выбираем информацию об удаляемом объекте
						// если объект существует
						if($item!=0)
						{
							/** Удаление объекта */
							$result=$db->del($table_items,$sql_clause);
							// если удачно
							if($result!='-1'){$ok = 1;$output_message = "Объект удален!";}// логируем успех
							else{$ok = 0;$output="Ошибка при удалении объекта!";}// иначе логируем ошибку
						}
						else{$ok = 0;$output="Не найден объект для удаления";}// иначе логируем ошибку
					}
					else{$ok = 0;$output="Недостаточно данных для идентификации объекта";}// иначе логируем ошибку
				}
				else{$ok = 0;$output="Не выбран объект для удаления";}// иначе логируем ошибку
				// отправляем лог и статус операции
				$GLOBALS['_RESULT']=array('output'=>$output_message,'ok'=>$ok);
				break;
			//TODO: del_item->opinion
			case 'opinion':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_opinions;
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item!=0)
						{
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
				}
				else $output="Не указан объект для удаления";
				$GLOBALS['_RESULT']=array('output'=>$output);
				break;
			//TODO: del_item->new
			case 'new':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_news;
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item!=0)
						{
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
				}
				else $output="Не указан объект для удаления";
				$GLOBALS['_RESULT']=array('output'=>$output);
				break;
			//TODO: del_item->page
			case 'page':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['catalog_id']) and intval($_REQUEST['clause_array']['catalog_id'])!=0)
				{
					$table_items=$table_pages;
					$clause=array();
					$sql_clause='';
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item!=0)
						{
							$result=$db->del($table_items,$sql_clause);
							if($result!='-1')
								$output = "Удалено";
							else $output="Ошибка при удалении!";
						}
						else $output="Не указан объект для удаления";
					}
					else $output="Не указан объект для удаления";
				}
				else $output="Не указан объект для удаления";
				$GLOBALS['_RESULT']=array('output'=>$output);
				break;
		}
		break;
	/** //TODO: del_item_attachment - ajax deleting of item attachment by $type
	 */
	case 'del_item_attachment':
		switch($_REQUEST['type'])
		{
			//TODO: del_item_attachment->event
			case 'event':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				/** сообщения об ошибках */
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_events;
					/** шаблон для отображения */
					$template = "seance";
					/** директория, содержащая ассоциированные файлы */
					$item_dir = '/events/';
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					/** сборщик ошибок */
					$no_error = array();
					/** что именно удаляем */
					$deleteType = '';
					$deleteType = strval($_REQUEST['deleteType']);
					$ok=1;
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item!=0)
						{
							if($deleteType != '')
							{
								switch($deleteType)
								{
									case 'video':
										if(intval($item['video']) != 0)
										{
											$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
											if(file_exists($path_to_delete.".flv")) $error = unlink($path_to_delete.".flv");
											if(!$error)
											{
												$ok = 1;
											}
											else $ok = 0;
											if($ok == 1)
											{
												$update_item = array('video' => '0');
												$db->update($table_items,$update_item,$sql_clause);
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										}
										else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
									case 'image1':
										if(intval($item['img1']) != 0)
										{
											$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
											if(file_exists($path_to_delete."_1_small.jpg")) $no_error[] = unlink($path_to_delete."_1_small.jpg");
											if(file_exists($path_to_delete."_1_med.jpg")) $no_error[] = unlink($path_to_delete."_1_med.jpg");
											if(file_exists($path_to_delete."_1.jpg")) $no_error[] = unlink($path_to_delete."_1.jpg");
											if(!empty($no_error) and count($no_error)!=3)
											{
												foreach($no_error as $k=>$v)
												{
													if($v === false){$ok = 0;break;}
													else{$ok = 1;}
												}
											}
											else $ok = 0;
											if($ok == 1)
											{
												$update_item = array('img1' => '0');
												$db->update($table_items,$update_item,$sql_clause);
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										}
										else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
									case 'image2':
										if(intval($item['img2']) != 0)
										{
											$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
											if(file_exists($path_to_delete."_2_small.jpg")) $no_error[] = unlink($path_to_delete."_2_small.jpg");
											if(file_exists($path_to_delete."_2_med.jpg")) $no_error[] = unlink($path_to_delete."_2_med.jpg");
											if(file_exists($path_to_delete."_2.jpg")) $no_error[] = unlink($path_to_delete."_2.jpg");
											if(!empty($no_error) and count($no_error)!=3)
											{
												foreach($no_error as $k=>$v)
												{
													if($v === false){$ok = 0;break;}
													else{$ok = 1;}
												}
											}
											else $ok = 0;
											if($ok == 1)
											{
												$update_item = array('img2' => '0');
												$db->update($table_items,$update_item,$sql_clause);
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										}
										else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
									case 'image3':
										if(intval($item['img3']) != 0)
										{
											$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
											if(file_exists($path_to_delete."_3_small.jpg")) $no_error[] = unlink($path_to_delete."_3_small.jpg");
											if(file_exists($path_to_delete."_3_med.jpg")) $no_error[] = unlink($path_to_delete."_3_med.jpg");
											if(file_exists($path_to_delete."_3.jpg")) $no_error[] = unlink($path_to_delete."_3.jpg");
											if(!empty($no_error) and count($no_error)!=3)
											{
												foreach($no_error as $k=>$v)
												{
													if($v === false){$ok = 0;break;}
													else{$ok = 1;}
												}
											}
											else $ok = 0;
											if($ok == 1)
											{
												$update_item = array('img3' => '0');
												$db->update($table_items,$update_item,$sql_clause);
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										}
										else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
									case 'image4':
										if(intval($item['img4']) != 0)
										{
											$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir.$item_dir.$item['id'];
											if(file_exists($path_to_delete."_4_small.jpg")) $no_error[] = unlink($path_to_delete."_4_small.jpg");
											if(file_exists($path_to_delete."_4_med.jpg")) $no_error[] = unlink($path_to_delete."_4_med.jpg");
											if(file_exists($path_to_delete."_4.jpg")) $no_error[] = unlink($path_to_delete."_4.jpg");
											if(!empty($no_error) and count($no_error)!=3)
											{
												foreach($no_error as $k=>$v)
												{
													if($v === false){$ok = 0;break;}
													else{$ok = 1;}
												}
											}
											else $ok = 0;
											if($ok == 1)
											{
												$update_item = array('img4' => '0');
												$db->update($table_items,$update_item,$sql_clause);
												$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
											}
											else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
										}
										else{$ok = 0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
										break;
								}
							}
							else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_DELETE_ATTACHMENT_TYPE',$action,$mod_alias),__FILE__,__LINE__);}
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				}
				else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
				break;
			//TODO: del_item_attachment->video
			case 'video':
				/** статус операции */
				$ok = 0;
				/** лог */
				$output_message = array();
				/** сообщения об ошибках */
				// если условие удаления содержит реальный ID объекта (ID!=0)
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
				{
					/** таблица, содержащая информацию об объекте */
					$table_items=$table_video;
					/** шаблон для отображения */
					$template = "seance";
					/** директория, содержащая ассоциированные файлы */
					$item_dir = '/video/';
					/** массив - сборщик условий */
					$clause=array();
					/** флаг глобальной ошибки */
					$error = false;
					/** строка для формирования условия */
					$sql_clause='';
					/** сборщик ошибок */
					$no_error = array();
					/** что именно удаляем */
					$deleteType = '';
					$deleteType = strval($_REQUEST['deleteType']);
					$is_video = preg_match("/^video(\d+)$/",$deleteType,$res_video);
					$is_image = preg_match("/^image(\d+)$/",$deleteType,$res_image);
					if($is_video == 1)
					{
						$find = "video";
						$itemIdToDelete = $res_video[1];
						$table_attach = $table_video_videos;
						
						$delete_clause = "WHERE id = '$itemIdToDelete'";
					}
					elseif($is_image == 1)
					{
						$find = "image";
						$itemIdToDelete = $res_image[1];
						$table_attach = $table_video_images;
						$pathToDelete = ROOT_DIR.UPLOAD."video/images/".$itemIdToDelete;
						$output_message[] = $pathToDelete;
						$delete_clause = "WHERE id = '$itemIdToDelete'";
					}
					$ok=1;
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item !== false)
						{
							$item_attach = $db->fetch_one("SELECT * FROM $table_attach $delete_clause");
							if($item_attach !== false)
							{
								switch($find)
								{
									case 'video':
										$path_to_delete = ROOT_DIR.UPLOAD."video/videos/".$item_attach['id'];
										if(file_exists($path_to_delete.".flv")) $error = unlink($path_to_delete.".flv");
										if(!$error)
										{
											$ok = 1;
										}
										else $ok = 0;
										if($ok == 1)
										{
											$db->query("DELETE FROM $table_attach $delete_clause");
											$output_message[] = $err->constructErrorMessage($err->getError('NO_ERROR',$action,$mod_alias),__FILE__,__LINE__);
										}
										else{$output_message[] = $err->constructErrorMessage($err->getError('ERROR_DELETE_ATTACHMENT',$action,$mod_alias),__FILE__,__LINE__);}
									break;
									case 'image':
										$path_to_delete = ROOT_DIR.UPLOAD."video/images/".$item_attach['id'];
										if(file_exists($path_to_delete."_small.jpg")) $no_error[] = unlink($path_to_delete."_small.jpg");
										if(file_exists($path_to_delete."_med.jpg")) $no_error[] = unlink($path_to_delete."_med.jpg");
										if(file_exists($path_to_delete.".jpg")) $no_error[] = unlink($path_to_delete.".jpg");
										if(!empty($no_error))
										{
											foreach($no_error as $k=>$v)
											{
												if($v === false){$ok = 0;break;}
												else{$ok = 1;}
											}
										}
										else $ok = 0;
										if($ok == 1)
										{
											$db->query("DELETE FROM $table_attach $delete_clause");
											$output_message[] = $err->constructErrorMessage("изображение, его копии, запись в БД удалены успешно",__FILE__,__LINE__);
										}
										else{$output_message[] = $err->constructErrorMessage("возникла ошбика при удалении изображения или его копий. Запись в БД сохранена.",__FILE__,__LINE__);}
									break;
								}
							}
							else
							{
								$ok = 0;$output_message[] = 
								$err->constructErrorMessage($err->getError('ERROR_NON_EXISTENT_OBJECT',$action,$mod_alias),__FILE__,__LINE__);
							}
						}
						else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_OBJECT',$action,$mod_alias),__FILE__,__LINE__);}
					}
					else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_INSUFFICIENTLY_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				}
				else{$ok=0;$output_message[] = $err->constructErrorMessage($err->getError('ERROR_NO_CLAUSE',$action,$mod_alias),__FILE__,__LINE__);}
				$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
				break;
			//TODO: del_item_attachment->good
			case 'good':
				if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']))
				{
					$table_items=$table_goods;
					$item_dir = "/goods/";
					$template = "good";
					$clause=array();
					$sql_clause='';
					$no_error = array();
					$ok=1;
					$clause_array=$_REQUEST['clause_array'];
					foreach($clause_array as $key=>$value)
					{
						$clause[]="`".$key."`='".$value."'";
					}
					if(!empty($clause))
					{
						$sql_clause="WHERE ".implode(' AND ',$clause);
						$item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
						if($item!=0)
						{
							$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
							if(file_exists($path_to_delete."_small.jpg")) $no_error[] = unlink($path_to_delete."_small.jpg");
							if(file_exists($path_to_delete."_med.jpg")) $no_error[] = unlink($path_to_delete."_med.jpg");
							if(file_exists($path_to_delete.".jpg")) $no_error[] = unlink($path_to_delete.".jpg");
							if(!empty($no_error) and count($no_error)!=3)
							{
								foreach($no_error as $k=>$v)
								{
									if($v===false) $ok = 0;
								}
							}
							else $ok = 0;
							if($ok==1)
							{
								$update_item = array(
									'photo' 	=> '0'
								);
								$db->update($table_items,$update_item,$sql_clause);
								$message = "Удалено";
							}
							else $message = "Ошибка при удалении";
							
						}
					}
					else
					{
						$ok=0;
						$message = "Не указан объект для удаления";
					}
				}
				else
				{
					$ok=0;
					$message = "Не указан объект для удаления";
				}
				$GLOBALS['_RESULT']=array('ok'=>$ok,'message'=>$message);
				break;
		}
		break;
	/** //TODO: upload_file - uploading file with $type for Catalog
	 **/
	case 'upload_file':
		switch($_REQUEST['type'])
		{
			case 'price':
				$table_items = $table_prices;
				$item_dir = "/prices/";
				$template = "price";
				$allowed_types=array("xls","doc","rar","zip");
				$obj_id = intval($_REQUEST['obj_id']);
				$filename=$_FILES['filename'];
				unset($_FILES['filename']);
				if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
				{
					$tmp_upload_file=explode(".",strtolower(basename($filename['name'])));
					// если еще нет ID фотки - вставляем в БД новые данные
					if($_REQUEST['id']=='')
					{
						$insert_item['type'] = $tmp_upload_file[1];
						$insert_item['filesize']=$filename['size'];
						$insert_item['catalog_id']=$obj_id;
						$db->insert($table_items,$insert_item);
						$id=$db->last_id();
						$id=intval($id);
					}
					// иначе
					else
					{
						$id=intval($_REQUEST['id']);
					}
					$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
					$update_item = array(
						'type' 		=> $tmp_upload_file[1],
						'filesize' 	=> $filename['size']
					);
					/* Сначала извлечем информацию об уже имеющемся файле */
					$name=$id;
					$dir="/".$mod_dir."/".$obj_id.$item_dir;
					/** START 	Если есть файлы под этим номером в папке, удаляем **/
					$old_file = $db->fetch_one("SELECT * FROM $table_items $clause_file");// старый файл
					if($old_file!=0)
					{
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$obj_id.$item_dir.$name.".".$old_file['type'];
						if(file_exists($path_to_delete)) @unlink($path_to_delete);
					}
					/** END 	Если есть файлы под этим номером в папке, удаляем **/
					
					$is_ok=upload_file_ajax($filename,$name,$dir,$allowed_types);
					if($is_ok)
					{
						$db->update($table_items,$update_item,$clause_file);
						$message="Файл загружен";
						print $message;
						$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
						$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
						$smarty->assign("item",$item);
						$smarty->assign("do","edit");
						$smarty->assign("obj_id",$obj_id);
						$smarty->assign("module",$module);
						$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
						$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
					}
					else
					{
						$output="Загрузка НЕ удалась!";
						print $output;
					}
				}
				else print "Это не файл!";
			break;
			case 'video':
				$table_items = $table_video;
				$item_dir = "/video/";
				$template = "video";
				$allowed_types=array("avi","mpg","flv","mov");
				$obj_id = intval($_REQUEST['obj_id']);
				$filename=$_FILES['filename'];
				unset($_FILES['filename']);
				if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
				{
					$tmp_upload_file=explode(".",strtolower(basename($filename['name'])));
					if($_REQUEST['id']=='')
					{
						$insert_item['type'] = $tmp_upload_file[1];
						$insert_item['filesize']=$filename['size'];
						$insert_item['catalog_id']=$obj_id;
						$db->insert($table_items,$insert_item);
						$id=$db->last_id();
						$id = intval($id);
					}
					else
					{
						$id=intval($_REQUEST['id']);
					}
					$name=$id;
					$dir="/".$mod_dir."/".$_REQUEST['obj_id'].$item_dir;
					/** START 	Если есть файлы под этим номером в папке, удаляем **/
					$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
					$update_item = array(
						'type' 		=> $tmp_upload_file[1],
						'filesize' 	=> $filename['size']
					);
						/* Сначала извлечем информацию об уже имеющемся файле */
					$old_file = $db->fetch_one("SELECT * FROM $table_items $clause_file");// старый файл
					if($old_file!=0)
					{
						$path_to_delete = ROOT_DIR.UPLOAD.$mod_dir."/".$obj_id.$item_dir.$name.".".$old_file['type'];
						if(file_exists($path_to_delete)) @unlink($path_to_delete);
					}
					/** END 	Если есть файлы под этим номером в папке, удаляем **/
					
					$is_ok=upload_file_ajax($filename,$name,$dir,$allowed_types);
					if($is_ok)
					{
						$db->update($table_items,$update_item,$clause_file);
						$message="Файл загружен";
						print $message;
						$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
						$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'].".".$item['type'];
						$smarty->assign("item",$item);
						$smarty->assign("do","edit");
						$smarty->assign("obj_id",$obj_id);
						$smarty->assign("module",$module);
						$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
						$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
					}
					else
					{
						$output="Загрузка НЕ удалась!";
						print $output;
					}
				}
				else print "Это не файл!";
			break;
			case 'good':
				$table_items = $table_goods;
				$item_dir = "/goods/";
				$template = "good";
				$obj_id = intval($_REQUEST['obj_id']);
				$filename=$_FILES['filename'];
				unset($_FILES['filename']);
				if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
				{
					if($_REQUEST['id']=='')
					{
						$insert_item['catalog_id']=$obj_id;
						$db->insert($table_items,$insert_item);
						$id=$db->last_id();
						$id=intval($id);
					}
					else
					{
						$id=intval($_REQUEST['id']);
					}
					$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
					$name=$id;
					$dir="/".$mod_dir."/".$obj_id.$item_dir;
					$sizes = array(100,300,800);
					$is_ok=upload_image_ajax($filename,$name,$dir,$sizes,0);
					if($is_ok)
					{
						$clause_file = "WHERE id='$id' AND catalog_id='$obj_id'";
						$update_file['photo']='1';
						$db->update($table_items,$update_file,$clause_file);
						$message="Файл загружен";
						print $message;
						$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
						$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
						$smarty->assign("item",$item);
						$smarty->assign("do","edit");
						$smarty->assign("obj_id",$obj_id);
						$smarty->assign("module",$module);
						$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
						$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
					}
					else
					{
						$output="Загрузка НЕ удалась!";
						print $output;
					}
				}
				else print "Это не файл!";
			break;
			case 'photo':
				$table_items = $table_photoes;
				$item_dir = "/photoes/";
				$template = "photo";
				$obj_id = intval($_REQUEST['obj_id']);
				$filename=$_FILES['filename'];
				unset($_FILES['filename']);
				if($filename['name']!='' and $filename['size']!='0' and $filename['error']=='0')
				{
					if($_REQUEST['id']=='')
					{
						$insert_item['catalog_id']=$obj_id;
						$db->insert($table_items,$insert_item);
						$id=$db->last_id();
						intval($id);
					}
					else
					{
						$id=intval($_REQUEST['id']);
					}
					$name=$id;
					$dir="/".$mod_dir."/".$obj_id.$item_dir;
					$sizes = array(100,300,800);
					$is_ok=upload_image_ajax($filename,$name,$dir,$sizes,0);
					if($is_ok)
					{
						$message="Файл загружен";
						print $message;
						$item=$db->fetch_one("SELECT * FROM $table_items WHERE id='$id' AND catalog_id='$obj_id'");
						$item['file']=UPLOAD.$mod_dir."/".$item['catalog_id'].$item_dir.$item['id'];
						$smarty->assign("item",$item);
						$smarty->assign("do","edit");
						$smarty->assign("obj_id",$obj_id);
						$smarty->assign("module",$module);
						$output = $smarty->fetch($module['tmpl_dir'].$template.TMPL_EXT);
						$GLOBALS['_RESULT']=array('output'=>$output,'data'=>$item);
					}
					else
					{
						$output="Загрузка НЕ удалась!";
						print $output;
					}
				}
				else print "Это не файл!";
			break;
		}
	break;
    //TODO: turn_off
    case 'turn_off':
        /** Статус операции */
        $ok = 0;
        /** Лог ошибок */
        $output_message = array();
        /** Если присутствует тип объекта */
        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
        {
            switch(strval($_REQUEST['type']))
            {
                //TODO: turn_off->company
                case 'company':
                    // Check is ID isset into clause array (ID!=0)
                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
                    {
                        /** Table of items */
                        $table_items = $table_company_catalog;
                        /** Array with "WHERE" clauses */
                        $clause=array();
                        /** String to join clauses into big one */
                        $sql_clause='';
                        $clause_array=$_REQUEST['clause_array'];
                        foreach($clause_array as $key=>$value)
                        {
                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
                        }
                        if(!empty($clause))
                        {
                            $sql_clause="WHERE ".implode(' AND ',$clause);
                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
                            if(!empty($turned_item))
                            {
                                $turn_this['status'] = 0;
                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
                                $ok = 1;
                                $output_message[] = "Объект скрыт";
                            }
                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
                        }
                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
                    }
                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
                break;
            }
        }
        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
    break;
    //TODO: turn_on
    case 'turn_on':
        /** Статус операции */
        $ok = 0;
        /** Лог ошибок */
        $output_message = array();
        /** Если присутствует тип объекта */
        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
        {
            switch(strval($_REQUEST['type']))
            {
                //TODO: turn_on->company
                case 'company':
                    // Check is ID isset into clause array (ID!=0)
                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
                    {
                        /** Table of items */
                        $table_items = $table_company_catalog;
                        /** Array with "WHERE" clauses */
                        $clause=array();
                        /** String to join clauses into big one */
                        $sql_clause='';
                        $clause_array=$_REQUEST['clause_array'];
                        foreach($clause_array as $key=>$value)
                        {
                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
                        }
                        if(!empty($clause))
                        {
                            $sql_clause="WHERE ".implode(' AND ',$clause);
                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
                            if(!empty($turned_item))
                            {
                                $turn_this['status'] = 2;
                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
                                $ok = 1;
                                $output_message[] = "Объект включен";
                            }
                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
                        }
                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
                    }
                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
                break;
            }
        }
        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
    break;
    //TODO: moderate
    case 'moderate':
        /** Статус операции */
        $ok = 0;
        /** Лог ошибок */
        $output_message = array();
        /** Если присутствует тип объекта */
        if(isset($_REQUEST['type']) and strval($_REQUEST['type']) != '')
        {
            switch(strval($_REQUEST['type']))
            {
                //TODO: moderate->company
                case 'company':
                    // Check is ID isset into clause array (ID!=0)
                    if(isset($_REQUEST['clause_array']) and !empty($_REQUEST['clause_array']) and isset($_REQUEST['clause_array']['id']) and intval($_REQUEST['clause_array']['id']) != 0)
                    {
                        /** Table of items */
                        $table_items = $table_company_catalog;
                        /** Array with "WHERE" clauses */
                        $clause=array();
                        /** String to join clauses into big one */
                        $sql_clause='';
                        $clause_array=$_REQUEST['clause_array'];
                        foreach($clause_array as $key=>$value)
                        {
                            $clause[]="`".mysql_real_escape_string($key)."`='".mysql_real_escape_string($value)."'";
                        }
                        if(!empty($clause))
                        {
                            $sql_clause="WHERE ".implode(' AND ',$clause);
                            $turned_item = $db->fetch_one("SELECT * FROM $table_items $sql_clause");
                            if(!empty($turned_item))
                            {
                                $turn_this['status'] = 1;
                                $turn_off_item_query = $db->update($table_items,$turn_this,$sql_clause);
                                $ok = 1;
                                $output_message[] = "Объект отправлен на модерацию";
                            }
                            else{$ok = 0;$output_message[] = "Указанный объект не существует. Операция прервана";}
                        }
                        else{$ok = 0;$output_message[] = "Недостаточно условий для определения объекта. Операция прервана";}
                    }
                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
                break;
            }
        }
        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
        $GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
    break;
    //TODO: tableDnD - изменение порядка в группе элементов
    case 'tableDnD':
        /** Статус операции */
        $ok = 0;
        /** Лог ошибок */
        $output_message = array();
        /** Если присутствует тип объекта */
    	if(isset($_REQUEST['module']) and strval($_REQUEST['module']) != '')
    	{
    		switch(strval($_REQUEST['module']))
    		{
    			//TODO: tableDnD->admin
    			case 'admin':
                    // Check is array isset into clause array (ID!=0)
                    if(isset($_REQUEST['table_items']) and !empty($_REQUEST['table_items']))
                    {
                    	/** регулярное выражение для вычленения ID */
                    	$regexp = "/^items_(\d+)$/";
                        /** Table of items */
                        $table_items = $db->pfx."admin_tree";
                        /** Array with "WHERE" clauses */
                        $clause=array();
                        /** String to join clauses into big one */
                        $sql_clause='';
                        $clause_array=$_REQUEST['table_items'];
                        foreach($clause_array as $key=>$value)
                        {
                        	$is_items_id = preg_match($regexp,$value,$catching);
                        	if(isset($catching[1]) and intval($catching[1]) != 0)
                        	{
                        		$sql_clause = '';
	                            $sql_clause = "WHERE id = '".intval($catching[1])."'";
	                            $sql_update = array('order_num'=>intval($key));
	                            $res = $db->update($table_items,$sql_update,$sql_clause);
	                            if(!$res)
	                            {
	                            	die("неудачная попытка апдейта таблицы!");
	                            }
                        	}
                        }
                        $ok = 1;
                    }
                    else{$ok = 0;$output_message[] = "Не указан объект. Операция не выполнена";}
    			break;
    		}
    	}
        else{$ok = 0;$output_message[] = "Не указан тип объекта. Операция не выполнена";}
        if($ok == 0) die(implode("<br>",$output_message));
        else die("ok");
        //$GLOBALS['_RESULT']=array('ok'=>$ok,'output'=>implode("<br>",$output_message));
    break;
}
/**
 *	END
 */
?>